package net.soporte.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import java.util.Vector;

import org.apache.catalina.Session;
import org.apache.struts.action.ActionForm;

import fr.improve.struts.taglib.layout.field.ajax.select.Option;

import net.soporte.form.FalloForm;
import net.soporte.form.FalloSeguimientoForm;
import net.soporte.interfaces.DAOCommon;

public class FalloDAO implements DAOCommon {

	public int Insertar(ActionForm form) {
		// TODO Auto-generated method stub
		
		FalloForm falloForm = (FalloForm)form;
		
		System.out.println(falloForm.getCodigoEmpleado());
		System.out.println(falloForm.getCodigoEstado());
		System.out.println(falloForm.getCodigoTipoFalla());
		System.out.println(falloForm.getDescripcion());
		System.out.println(falloForm.getFechaFalla());
		System.out.println(falloForm.getCodigoUsuario());
		
		
		// TODO Romel, hay que insertar en la tabla de seguimiento el primer estado
		// de la incidencia/fallo (codigoEstado=1)
		
		
		return 0;
	}

	public int Borrar(ActionForm form) {
		// TODO Auto-generated method stub
		return 0;
	}

	public int Actualizar(ActionForm form) {
		// TODO Auto-generated method stub
		return 0;
	}

	public int Buscar(ActionForm form) {
		// TODO Auto-generated method stub
		long codigoFallo;
		FalloSeguimientoForm falloSeguimientoForm=(FalloSeguimientoForm)form;
		
		//romel:obtener por este codigo la consulta del fallo
		codigoFallo=falloSeguimientoForm.getCodigoFallo();
try {
	
	DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
	Connection cn;
cn = DriverManager
		.getConnection("jdbc:oracle:thin:@hp-pc:1521:XE",
				"tsc", "tsc");
Statement stm=cn.createStatement();
ResultSet rs=stm.executeQuery("select t.nombretecnico,t.apellidotecnico, f.nombretipofalla, fa.fecha_falla, fa.descripcion, e.nombreestado from fallo fa, tecnico t, tipo_falla f, estado e where fa.CODIGO_TEC=t.IDTECNICO and fa.CODIGOFALLA=f.CODIGOTIPOFALLA and fa.CODIGOESTADO=e.CODIGOESTADO and fa.CODIGOFALLA="+ codigoFallo);

if(rs.next()){
	
	falloSeguimientoForm.setDescripcion(rs.getString(5));
	falloSeguimientoForm.setFechaFalla(rs.getString(4));
	falloSeguimientoForm.setNombreEstado(rs.getString(6));
	falloSeguimientoForm.setNombreTecnico(rs.getString(1)+ " " +rs.getString(2));
	falloSeguimientoForm.setNombreTipoFalla(rs.getString(3));
	
}else{
	System.out.println("no se encontro el registro");
	
}
	
} catch (Exception e) {
	// TODO: handle exception
}
		//dummi
	
		//fin dummie
		
		
		return 0;
	}

	public List ListarDatos(ActionForm form) {
		// TODO Auto-generated method stub
		return null;
	}
	/**
	 * Obtiene las incidencias para un usuario en especifico, 
	 * Solo las que NO estan cerradas codigoEstado<>2
	 */
	public List ListarSeguimiento(int codigoEmpleado){
		
		//debe ser filtrado por usuario/empleado
		//dummie
		List falloSeguimientoList = new Vector();
		//fin dummie
		//FalloSeguimientoForm
		
		try {
			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
			Connection cn;
		cn = DriverManager
				.getConnection("jdbc:oracle:thin:@hp-pc:1521:XE",
						"tsc", "tsc");
		Statement stm=cn.createStatement();
		ResultSet rs=stm.executeQuery("select fa.CODIGOFALLA, t.nombretecnico,t.apellidotecnico, f.descripcion  , fa.fecha_falla, fa.descripcion, e.nombreestado from fallo fa, tecnico t, tipo_falla f, estado e where fa.CODIGO_TEC=t.IDTECNICO and fa.CODIGOFALLA=f.CODIGOTIPOFALLA and fa.CODIGOESTADO=e.CODIGOESTADO");
		
		while(rs.next()){
			falloSeguimientoList.add(new FalloSeguimientoForm(rs.getInt(1),rs.getString(2) + " " + rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6), rs.getString(7)));
		 
			
		}
		} catch (Exception e) {
			
			// TODO: handle exception
			System.out.println(e.toString());
			System.out.println(e.getMessage());
		}
		
		
		
		return falloSeguimientoList;
	}
}
